{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 99,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 导入必要的工具包\n",
    "import pandas as pd\n",
    "import xgboost as xgb\n",
    "import numpy as np\n",
    "from  xgboost import XGBClassifier\n",
    "\n",
    "from sklearn.model_selection import GridSearchCV\n",
    "from sklearn.model_selection import StratifiedKFold\n",
    "\n",
    "from sklearn.metrics import log_loss\n",
    "\n",
    "from matplotlib import pyplot\n",
    "import seaborn as sns\n",
    "%matplotlib inline"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 100,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>bathrooms</th>\n",
       "      <th>bedrooms</th>\n",
       "      <th>price</th>\n",
       "      <th>price_bathrooms</th>\n",
       "      <th>price_bedrooms</th>\n",
       "      <th>room_diff</th>\n",
       "      <th>room_num</th>\n",
       "      <th>Year</th>\n",
       "      <th>Month</th>\n",
       "      <th>Day</th>\n",
       "      <th>...</th>\n",
       "      <th>walk</th>\n",
       "      <th>walls</th>\n",
       "      <th>war</th>\n",
       "      <th>washer</th>\n",
       "      <th>water</th>\n",
       "      <th>wheelchair</th>\n",
       "      <th>wifi</th>\n",
       "      <th>windows</th>\n",
       "      <th>work</th>\n",
       "      <th>interest_level</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1.5</td>\n",
       "      <td>3</td>\n",
       "      <td>3000</td>\n",
       "      <td>1200.0</td>\n",
       "      <td>750.000000</td>\n",
       "      <td>-1.5</td>\n",
       "      <td>4.5</td>\n",
       "      <td>2016</td>\n",
       "      <td>6</td>\n",
       "      <td>24</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1.0</td>\n",
       "      <td>2</td>\n",
       "      <td>5465</td>\n",
       "      <td>2732.5</td>\n",
       "      <td>1821.666667</td>\n",
       "      <td>-1.0</td>\n",
       "      <td>3.0</td>\n",
       "      <td>2016</td>\n",
       "      <td>6</td>\n",
       "      <td>12</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>1.0</td>\n",
       "      <td>1</td>\n",
       "      <td>2850</td>\n",
       "      <td>1425.0</td>\n",
       "      <td>1425.000000</td>\n",
       "      <td>0.0</td>\n",
       "      <td>2.0</td>\n",
       "      <td>2016</td>\n",
       "      <td>4</td>\n",
       "      <td>17</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>1.0</td>\n",
       "      <td>1</td>\n",
       "      <td>3275</td>\n",
       "      <td>1637.5</td>\n",
       "      <td>1637.500000</td>\n",
       "      <td>0.0</td>\n",
       "      <td>2.0</td>\n",
       "      <td>2016</td>\n",
       "      <td>4</td>\n",
       "      <td>18</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>1.0</td>\n",
       "      <td>4</td>\n",
       "      <td>3350</td>\n",
       "      <td>1675.0</td>\n",
       "      <td>670.000000</td>\n",
       "      <td>-3.0</td>\n",
       "      <td>5.0</td>\n",
       "      <td>2016</td>\n",
       "      <td>4</td>\n",
       "      <td>28</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>5 rows × 228 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "   bathrooms  bedrooms  price  price_bathrooms  price_bedrooms  room_diff  \\\n",
       "0        1.5         3   3000           1200.0      750.000000       -1.5   \n",
       "1        1.0         2   5465           2732.5     1821.666667       -1.0   \n",
       "2        1.0         1   2850           1425.0     1425.000000        0.0   \n",
       "3        1.0         1   3275           1637.5     1637.500000        0.0   \n",
       "4        1.0         4   3350           1675.0      670.000000       -3.0   \n",
       "\n",
       "   room_num  Year  Month  Day       ...        walk  walls  war  washer  \\\n",
       "0       4.5  2016      6   24       ...           0      0    0       0   \n",
       "1       3.0  2016      6   12       ...           0      0    0       0   \n",
       "2       2.0  2016      4   17       ...           0      0    0       0   \n",
       "3       2.0  2016      4   18       ...           0      0    0       0   \n",
       "4       5.0  2016      4   28       ...           0      0    1       0   \n",
       "\n",
       "   water  wheelchair  wifi  windows  work  interest_level  \n",
       "0      0           0     0        0     0               1  \n",
       "1      0           0     0        0     0               2  \n",
       "2      0           0     0        0     0               0  \n",
       "3      0           0     0        0     0               2  \n",
       "4      0           0     0        0     0               2  \n",
       "\n",
       "[5 rows x 228 columns]"
      ]
     },
     "execution_count": 100,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "dbpath = \"./data/\"\n",
    "train = pd.read_csv(dbpath + \"RentListingInquries_FE_train.csv\");\n",
    "train.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 101,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "<class 'pandas.core.frame.DataFrame'>\n",
      "RangeIndex: 49352 entries, 0 to 49351\n",
      "Columns: 228 entries, bathrooms to interest_level\n",
      "dtypes: float64(9), int64(219)\n",
      "memory usage: 85.8 MB\n"
     ]
    }
   ],
   "source": [
    "train.info()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 102,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>bathrooms</th>\n",
       "      <th>bedrooms</th>\n",
       "      <th>price</th>\n",
       "      <th>price_bathrooms</th>\n",
       "      <th>price_bedrooms</th>\n",
       "      <th>room_diff</th>\n",
       "      <th>room_num</th>\n",
       "      <th>Year</th>\n",
       "      <th>Month</th>\n",
       "      <th>Day</th>\n",
       "      <th>...</th>\n",
       "      <th>walk</th>\n",
       "      <th>walls</th>\n",
       "      <th>war</th>\n",
       "      <th>washer</th>\n",
       "      <th>water</th>\n",
       "      <th>wheelchair</th>\n",
       "      <th>wifi</th>\n",
       "      <th>windows</th>\n",
       "      <th>work</th>\n",
       "      <th>interest_level</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>count</th>\n",
       "      <td>49352.00000</td>\n",
       "      <td>49352.000000</td>\n",
       "      <td>4.935200e+04</td>\n",
       "      <td>4.935200e+04</td>\n",
       "      <td>4.935200e+04</td>\n",
       "      <td>49352.000000</td>\n",
       "      <td>49352.000000</td>\n",
       "      <td>49352.0</td>\n",
       "      <td>49352.000000</td>\n",
       "      <td>49352.000000</td>\n",
       "      <td>...</td>\n",
       "      <td>49352.000000</td>\n",
       "      <td>49352.000000</td>\n",
       "      <td>49352.000000</td>\n",
       "      <td>49352.000000</td>\n",
       "      <td>49352.000000</td>\n",
       "      <td>49352.000000</td>\n",
       "      <td>49352.000000</td>\n",
       "      <td>49352.000000</td>\n",
       "      <td>49352.000000</td>\n",
       "      <td>49352.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>mean</th>\n",
       "      <td>1.21218</td>\n",
       "      <td>1.541640</td>\n",
       "      <td>3.830174e+03</td>\n",
       "      <td>1.697863e+03</td>\n",
       "      <td>1.657567e+03</td>\n",
       "      <td>-0.329460</td>\n",
       "      <td>2.753820</td>\n",
       "      <td>2016.0</td>\n",
       "      <td>5.014852</td>\n",
       "      <td>15.206881</td>\n",
       "      <td>...</td>\n",
       "      <td>0.003080</td>\n",
       "      <td>0.000385</td>\n",
       "      <td>0.186477</td>\n",
       "      <td>0.009361</td>\n",
       "      <td>0.000446</td>\n",
       "      <td>0.028165</td>\n",
       "      <td>0.002026</td>\n",
       "      <td>0.001013</td>\n",
       "      <td>0.000952</td>\n",
       "      <td>1.616895</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>std</th>\n",
       "      <td>0.50142</td>\n",
       "      <td>1.115018</td>\n",
       "      <td>2.206687e+04</td>\n",
       "      <td>1.100477e+04</td>\n",
       "      <td>7.817996e+03</td>\n",
       "      <td>0.947732</td>\n",
       "      <td>1.446091</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.824442</td>\n",
       "      <td>8.280749</td>\n",
       "      <td>...</td>\n",
       "      <td>0.055412</td>\n",
       "      <td>0.019618</td>\n",
       "      <td>0.389495</td>\n",
       "      <td>0.101625</td>\n",
       "      <td>0.021109</td>\n",
       "      <td>0.165446</td>\n",
       "      <td>0.044969</td>\n",
       "      <td>0.031814</td>\n",
       "      <td>0.030846</td>\n",
       "      <td>0.626035</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>min</th>\n",
       "      <td>0.00000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>4.300000e+01</td>\n",
       "      <td>2.150000e+01</td>\n",
       "      <td>4.300000e+01</td>\n",
       "      <td>-5.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>2016.0</td>\n",
       "      <td>4.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>...</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>25%</th>\n",
       "      <td>1.00000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>2.500000e+03</td>\n",
       "      <td>1.225000e+03</td>\n",
       "      <td>1.066667e+03</td>\n",
       "      <td>-1.000000</td>\n",
       "      <td>2.000000</td>\n",
       "      <td>2016.0</td>\n",
       "      <td>4.000000</td>\n",
       "      <td>8.000000</td>\n",
       "      <td>...</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>50%</th>\n",
       "      <td>1.00000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>3.150000e+03</td>\n",
       "      <td>1.500000e+03</td>\n",
       "      <td>1.383417e+03</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>2.000000</td>\n",
       "      <td>2016.0</td>\n",
       "      <td>5.000000</td>\n",
       "      <td>15.000000</td>\n",
       "      <td>...</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>2.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>75%</th>\n",
       "      <td>1.00000</td>\n",
       "      <td>2.000000</td>\n",
       "      <td>4.100000e+03</td>\n",
       "      <td>1.850000e+03</td>\n",
       "      <td>1.962500e+03</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>4.000000</td>\n",
       "      <td>2016.0</td>\n",
       "      <td>6.000000</td>\n",
       "      <td>22.000000</td>\n",
       "      <td>...</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>2.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>max</th>\n",
       "      <td>10.00000</td>\n",
       "      <td>8.000000</td>\n",
       "      <td>4.490000e+06</td>\n",
       "      <td>2.245000e+06</td>\n",
       "      <td>1.496667e+06</td>\n",
       "      <td>8.000000</td>\n",
       "      <td>13.500000</td>\n",
       "      <td>2016.0</td>\n",
       "      <td>6.000000</td>\n",
       "      <td>31.000000</td>\n",
       "      <td>...</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>2.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>2.000000</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>8 rows × 228 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "         bathrooms      bedrooms         price  price_bathrooms  \\\n",
       "count  49352.00000  49352.000000  4.935200e+04     4.935200e+04   \n",
       "mean       1.21218      1.541640  3.830174e+03     1.697863e+03   \n",
       "std        0.50142      1.115018  2.206687e+04     1.100477e+04   \n",
       "min        0.00000      0.000000  4.300000e+01     2.150000e+01   \n",
       "25%        1.00000      1.000000  2.500000e+03     1.225000e+03   \n",
       "50%        1.00000      1.000000  3.150000e+03     1.500000e+03   \n",
       "75%        1.00000      2.000000  4.100000e+03     1.850000e+03   \n",
       "max       10.00000      8.000000  4.490000e+06     2.245000e+06   \n",
       "\n",
       "       price_bedrooms     room_diff      room_num     Year         Month  \\\n",
       "count    4.935200e+04  49352.000000  49352.000000  49352.0  49352.000000   \n",
       "mean     1.657567e+03     -0.329460      2.753820   2016.0      5.014852   \n",
       "std      7.817996e+03      0.947732      1.446091      0.0      0.824442   \n",
       "min      4.300000e+01     -5.000000      0.000000   2016.0      4.000000   \n",
       "25%      1.066667e+03     -1.000000      2.000000   2016.0      4.000000   \n",
       "50%      1.383417e+03      0.000000      2.000000   2016.0      5.000000   \n",
       "75%      1.962500e+03      0.000000      4.000000   2016.0      6.000000   \n",
       "max      1.496667e+06      8.000000     13.500000   2016.0      6.000000   \n",
       "\n",
       "                Day       ...                walk         walls           war  \\\n",
       "count  49352.000000       ...        49352.000000  49352.000000  49352.000000   \n",
       "mean      15.206881       ...            0.003080      0.000385      0.186477   \n",
       "std        8.280749       ...            0.055412      0.019618      0.389495   \n",
       "min        1.000000       ...            0.000000      0.000000      0.000000   \n",
       "25%        8.000000       ...            0.000000      0.000000      0.000000   \n",
       "50%       15.000000       ...            0.000000      0.000000      0.000000   \n",
       "75%       22.000000       ...            0.000000      0.000000      0.000000   \n",
       "max       31.000000       ...            1.000000      1.000000      1.000000   \n",
       "\n",
       "             washer         water    wheelchair          wifi       windows  \\\n",
       "count  49352.000000  49352.000000  49352.000000  49352.000000  49352.000000   \n",
       "mean       0.009361      0.000446      0.028165      0.002026      0.001013   \n",
       "std        0.101625      0.021109      0.165446      0.044969      0.031814   \n",
       "min        0.000000      0.000000      0.000000      0.000000      0.000000   \n",
       "25%        0.000000      0.000000      0.000000      0.000000      0.000000   \n",
       "50%        0.000000      0.000000      0.000000      0.000000      0.000000   \n",
       "75%        0.000000      0.000000      0.000000      0.000000      0.000000   \n",
       "max        2.000000      1.000000      1.000000      1.000000      1.000000   \n",
       "\n",
       "               work  interest_level  \n",
       "count  49352.000000    49352.000000  \n",
       "mean       0.000952        1.616895  \n",
       "std        0.030846        0.626035  \n",
       "min        0.000000        0.000000  \n",
       "25%        0.000000        1.000000  \n",
       "50%        0.000000        2.000000  \n",
       "75%        0.000000        2.000000  \n",
       "max        1.000000        2.000000  \n",
       "\n",
       "[8 rows x 228 columns]"
      ]
     },
     "execution_count": 102,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "train.describe()\n",
    "#从下表中看到年度属性标准差为0，表示这个属性没有值的变化，可以抛弃。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 103,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x10231f28>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "sns.countplot(train.interest_level);\n",
    "pyplot.xlabel('interest_level');\n",
    "pyplot.ylabel('Number of occurrences');"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 104,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0    1\n",
       "1    2\n",
       "2    0\n",
       "3    2\n",
       "4    2\n",
       "Name: interest_level, dtype: int64"
      ]
     },
     "execution_count": 104,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#去掉year属性\n",
    "y_train = train['interest_level']\n",
    "y_train.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 105,
   "metadata": {},
   "outputs": [],
   "source": [
    "X_train = train.drop([\"interest_level\",\"Year\"],axis=1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 106,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>bathrooms</th>\n",
       "      <th>bedrooms</th>\n",
       "      <th>price</th>\n",
       "      <th>price_bathrooms</th>\n",
       "      <th>price_bedrooms</th>\n",
       "      <th>room_diff</th>\n",
       "      <th>room_num</th>\n",
       "      <th>Month</th>\n",
       "      <th>Day</th>\n",
       "      <th>Wday</th>\n",
       "      <th>...</th>\n",
       "      <th>virtual</th>\n",
       "      <th>walk</th>\n",
       "      <th>walls</th>\n",
       "      <th>war</th>\n",
       "      <th>washer</th>\n",
       "      <th>water</th>\n",
       "      <th>wheelchair</th>\n",
       "      <th>wifi</th>\n",
       "      <th>windows</th>\n",
       "      <th>work</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1.5</td>\n",
       "      <td>3</td>\n",
       "      <td>3000</td>\n",
       "      <td>1200.0</td>\n",
       "      <td>750.000000</td>\n",
       "      <td>-1.5</td>\n",
       "      <td>4.5</td>\n",
       "      <td>6</td>\n",
       "      <td>24</td>\n",
       "      <td>4</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1.0</td>\n",
       "      <td>2</td>\n",
       "      <td>5465</td>\n",
       "      <td>2732.5</td>\n",
       "      <td>1821.666667</td>\n",
       "      <td>-1.0</td>\n",
       "      <td>3.0</td>\n",
       "      <td>6</td>\n",
       "      <td>12</td>\n",
       "      <td>6</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>1.0</td>\n",
       "      <td>1</td>\n",
       "      <td>2850</td>\n",
       "      <td>1425.0</td>\n",
       "      <td>1425.000000</td>\n",
       "      <td>0.0</td>\n",
       "      <td>2.0</td>\n",
       "      <td>4</td>\n",
       "      <td>17</td>\n",
       "      <td>6</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>1.0</td>\n",
       "      <td>1</td>\n",
       "      <td>3275</td>\n",
       "      <td>1637.5</td>\n",
       "      <td>1637.500000</td>\n",
       "      <td>0.0</td>\n",
       "      <td>2.0</td>\n",
       "      <td>4</td>\n",
       "      <td>18</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>1.0</td>\n",
       "      <td>4</td>\n",
       "      <td>3350</td>\n",
       "      <td>1675.0</td>\n",
       "      <td>670.000000</td>\n",
       "      <td>-3.0</td>\n",
       "      <td>5.0</td>\n",
       "      <td>4</td>\n",
       "      <td>28</td>\n",
       "      <td>3</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>5 rows × 226 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "   bathrooms  bedrooms  price  price_bathrooms  price_bedrooms  room_diff  \\\n",
       "0        1.5         3   3000           1200.0      750.000000       -1.5   \n",
       "1        1.0         2   5465           2732.5     1821.666667       -1.0   \n",
       "2        1.0         1   2850           1425.0     1425.000000        0.0   \n",
       "3        1.0         1   3275           1637.5     1637.500000        0.0   \n",
       "4        1.0         4   3350           1675.0      670.000000       -3.0   \n",
       "\n",
       "   room_num  Month  Day  Wday  ...   virtual  walk  walls  war  washer  water  \\\n",
       "0       4.5      6   24     4  ...         0     0      0    0       0      0   \n",
       "1       3.0      6   12     6  ...         0     0      0    0       0      0   \n",
       "2       2.0      4   17     6  ...         0     0      0    0       0      0   \n",
       "3       2.0      4   18     0  ...         0     0      0    0       0      0   \n",
       "4       5.0      4   28     3  ...         0     0      0    1       0      0   \n",
       "\n",
       "   wheelchair  wifi  windows  work  \n",
       "0           0     0        0     0  \n",
       "1           0     0        0     0  \n",
       "2           0     0        0     0  \n",
       "3           0     0        0     0  \n",
       "4           0     0        0     0  \n",
       "\n",
       "[5 rows x 226 columns]"
      ]
     },
     "execution_count": 106,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "X_train.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 107,
   "metadata": {
    "scrolled": false
   },
   "outputs": [],
   "source": [
    "# prepare cross validation\n",
    "kfold = StratifiedKFold(n_splits=5, shuffle=True, random_state=3)\n",
    "def modelfit(alg,X_train,y_train,cv_folds=None,early_stopping_rounds=10):\n",
    "    xgb_param = alg.get_xgb_params()\n",
    "    xgb_param[\"num_class\"] = 9\n",
    "    xgtrain = xgb.DMatrix(X_train,label=y_train)\n",
    "    #此处尝试使用bin文件\n",
    "    dbpath = \"./data/\"\n",
    "    #xgtrain = xgb.DMatrix(dbpath + \"RentListingInquries_FE_train.bin\")\n",
    "    cvresult = xgb.cv(xgb_param,xgtrain,num_boost_round=alg.get_params()[\"n_estimators\"],\n",
    "                          folds=cv_folds,metrics='mlogloss',early_stopping_rounds=early_stopping_rounds)\n",
    "    cvresult.to_csv(\"1_nestimators.csv\",index_label=\"n_estimators\")\n",
    "    \n",
    "    #取到最佳参数\n",
    "    n_estimators = cvresult.shape[0]\n",
    "    \n",
    "    #采用最佳参数，训练模型\n",
    "    alg.set_params(n_estimators=n_estimators)\n",
    "    alg.fit(X_train,y_train,eval_metric='mlogloss')\n",
    "    \n",
    "xgb1 = XGBClassifier(\n",
    "            learn_rate=0.1,\n",
    "            n_estimators=1000,\n",
    "            max_depth = 5,\n",
    "            min_child_weight=1,\n",
    "            gamma=0,\n",
    "            subsample=0.3,\n",
    "            colsample_bytree=0.8,\n",
    "            colsample_bylevel=0.7,\n",
    "            objective='multi:softprob',\n",
    "            seed=3\n",
    ")\n",
    "#此步骤已经完成，下面的程序直接读取CSV数据文件\n",
    "#modelfit(xgb1,X_train,y_train,cv_folds=kfold)\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 108,
   "metadata": {
    "scrolled": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "function modelfit completed.\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "(235, 5)"
      ]
     },
     "execution_count": 108,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "print(\"function modelfit completed.\")\n",
    "cvresult = pd.read_csv(\"1_nestimators.csv\")\n",
    "test_means = cvresult['test-mlogloss-mean']\n",
    "test_stds = cvresult['test-mlogloss-std'] \n",
    "\n",
    "train_means = cvresult['train-mlogloss-mean']\n",
    "train_stds = cvresult['train-mlogloss-std'] \n",
    "cvresult.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 109,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x14c68898>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "x_axis = range(0, cvresult.shape[0])\n",
    "pyplot.errorbar(x_axis, test_means, yerr=test_stds ,label='Test')\n",
    "pyplot.errorbar(x_axis, train_means, yerr=train_stds ,label='Train')\n",
    "pyplot.title(\"XGBoost n_estimators vs Log Loss\")\n",
    "pyplot.xlabel( 'n_estimators' )\n",
    "pyplot.ylabel( 'Log Loss' )\n",
    "#pyplot.savefig( 'n_estimators4_1.png' )\n",
    "\n",
    "pyplot.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 110,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x1302aa90>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "\n",
    "cvresult=cvresult.iloc[50:]\n",
    "test_means = cvresult['test-mlogloss-mean']\n",
    "test_stds = cvresult['test-mlogloss-std'] \n",
    "\n",
    "train_means = cvresult['train-mlogloss-mean']\n",
    "train_stds = cvresult['train-mlogloss-std'] \n",
    "x_axis = range(50, cvresult.shape[0] + 50)\n",
    "pyplot.errorbar(x_axis, test_means, yerr=test_stds ,label='Test')\n",
    "pyplot.errorbar(x_axis, train_means, yerr=train_stds ,label='Train')\n",
    "pyplot.title(\"XGBoost n_estimators vs Log Loss\")\n",
    "pyplot.xlabel( 'n_estimators' )\n",
    "pyplot.ylabel( 'Log Loss' )\n",
    "#pyplot.savefig( 'n_estimators4_1.png' )\n",
    "\n",
    "pyplot.show()"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 2",
   "language": "python",
   "name": "python2"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 2
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython2",
   "version": "2.7.14"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
